package com.haixiaoke.saas.bill.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.haixiaoke.saas.common.annotation.Excel;
import com.haixiaoke.saas.common.core.domain.BaseEntity;
import com.haixiaoke.saas.house.domain.House;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;


/**
 * 业主账单对象 biz_proprietor_bill
 *
 * @author qixi
 * @date 2024-05-28
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProprietorBill extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 一次性账单
     */
    public static final String BILL_TYPE_ONCE = "1";

    /**
     * 账单id
     */
    private String proprietorBillId;

    /**
     * 部门id
     */
    @Excel(name = "部门id")
    private Long deptId;

    /**
     * 房屋id
     */
    @Excel(name = "房屋id")
    private String houseId;

    /**
     * 业主id
     */
    @Excel(name = "业主id")
    private Long userId;

    /**
     * 业主姓名
     */
    @Excel(name = "业主姓名")
    private String userName;

    /**
     * 支付状态: 1,待付款 2,已付款 3,已逾期
     */
    @Excel(name = "支付状态: 1,待付款 2,已付款 3,已逾期")
    private String payState;

    /**
     * 账单金额
     */
    @Excel(name = "账单金额")
    private BigDecimal cost;

    /**
     * 最晚付款日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "最晚付款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date latestPayTime;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /**
     * 支付方式: 1线上 2线下
     */
    @Excel(name = "支付方式: 1线上 2线下")
    private String payMethod;

    /**
     * 支付凭证
     */
    @Excel(name = "支付凭证")
    private String payVoucher;

    /**
     * 账单类型: 1一次性服务费
     */
    @Excel(name = "账单类型: 1一次性服务费")
    private String billType;

    private House house;

    /**
     * 房屋地址
     */
    private String premisesAddress;

}
